//+--------------------------------------------------------------------------------
//| Copyright (c) 2012 - 2013 ### an.vuongngocduy
//| This file is a part of Compact Game Engine (CGE)
//+--------------------------------------------------------------------------------
#ifndef __CGE_CANVAS_H__
#define __CGE_CANVAS_H__

#include "cgeCommons.h"
#include "cgeRenderer.h"
#include "cgeString.h"
#include "cgeVector2.h"
#include "cgeDimension2.h"
#include "cgeRect.h"

using namespace cge::std;
using namespace cge::gfx;

namespace cge
{
	class Engine;

	class Canvas
	{
	friend class Engine;

	public:
		//! Default constructor
		Canvas(){};


		//! Destructor
		virtual ~Canvas(){};


		//! Setup new created canvas
		virtual void Setup(const String& title, const Vector2u& position, const Dimension2u& dimension, b8 fullScreen) = 0;

		
		//! Show window
		virtual void Show() = 0;


		//! Render all scene nodes
		virtual void Render() = 0;


	protected:
		Renderer* mRender;
		Rectu mRect;
		b8 mFullscreen;
	};
}

#endif//__CGE_CANVAS_H__